import java.util.Arrays;

public class question_16 {
}
class Solution_16 {
    public int threeSumClosest(int[] nums, int target) {
        //题目最接近的三数之和
        int len=nums.length;
        //对数组进行排序
        Arrays.sort(nums);
        int sum=100000;//先给一个相差很大的数
        //对于数组中的每个数进行遍历一次，最外层循环

        int result=0;
        for (int i = 0; i < len; i++) {

            int l=i+1;
            int r=len-1;
            while (l<r){
                //先统计当前的组合是否能更新最接近的值
                int temp=0;
                temp=nums[i]+nums[l]+nums[r];
                int c=Math.abs(temp-target);
                if(c<sum){
                    result=temp;//更新结果
                    sum=c;//更新距离
                }
                if(temp-target==0)//说明已经找到三个相加完全等于target的数了，直接返回就可以了
                    return temp;
                if(temp-target>0)
                    r--;
                if(temp-target<0)
                    l++;

            }
        }
        return result;
    }
}
